import { defineWrappedResponseHandler } from "#server/utils/handler"; import { R } from "#server/utils/response"; import { resolveCharacterIdentity } from "#server/service/character/identity"; import { getCharacterSessionByIdAndUser, getMessagesByCharacterSession } from "#server/service/character/session"; import { getCharacterCardBySlug } from "#server/service/character/character-card"; export default defineWrappedResponseHandler(async (event) => { const slug = getRouterParam(event, "slug"); const id = getRouterParam(event, "id"); if (!slug || !id) { return R.error("参数无效", null); } const card = await getCharacterCardBySlug(slug); if (!card) { return R.error("角色不存在", null); } const identity = await resolveCharacterIdentity(event); const session = await getCharacterSessionByIdAndUser(id, identity.userId, identity.tempToken); if (!session) { return R.error("会话不存在", null); } if (session.cardId !== card.id) { return R.error("会话不属于该角色", null); } const messages = await getMessagesByCharacterSession(id, { limit: 100 }); return R.success({ messages }); });